// 公用签名方法
// 签名数据组  appid-222-openid-123-out_trade_no-222-qweqweasd21@#214e12ewWEWQ(213)
let md5 = require('./md5.js');

//秘钥
//const SignKey = "-"+"shijiazhuang";
const SignKey = '-qweqweasd21@#214e12ewWEWQ(213)';

//获取参数
const signutil = (signObject) => {
    //要排序的对象
    //console.log(signObject)
    const sortObject = objKeySort(signObject);
    //排序后对象

    let arr = [];
    for (let key in sortObject) {
        arr.push(key + '-' + sortObject[key]);
    }
    let signValue = arr.join('-') + SignKey;
    return md5.md5(signValue);
};

//排序的函数
const objKeySort = (obj) => {
    //先用Object内置类的keys方法获取要排序对象的属性名，再利用Array原型上的sort方法对获取的属性名进行排序，newkey是一个数组
    var newkey = Object.keys(obj).sort();
    //创建一个新的对象，用于存放排好序的键值对
    var newObj = {};
    for (var i = 0; i < newkey.length; i++) {
        //遍历newkey数组
        newObj[newkey[i]] = obj[newkey[i]]; //向新创建的对象中按照排好的顺序依次增加键值对
    }
    return newObj;
};

//暴露接口
module.exports = {
    signutil: signutil
};
